class Art {
    Art() {
        System.out.println("Art constructor");
    }
}

class Drawing extends Art {
    Drawing() {
        System.out.println("Drawing constructor");
    }
}

class Cartoon extends Drawing {
/*    Cartoon() {
        System.out.println("Cartoon constructor");
    }*/
}

public class ExtendConstructor extends Drawing {

    public static void main(String[] args) {
        Cartoon cartoon = new Cartoon();
    }
}

/*
构造过程是从基类“向外”进行的，因此基类在子类构造器可以访问它之前就被初始化了。
即使没有为 Cartoon 创建构造器，编译器也会为它合成一个可以调用基类构造器的无参构造器。
删除 Cartoon 的构造器可以验证是这样的。
 */
